<?php

declare(strict_types=1);

namespace Shoofly;

//! ISO language/country codes
class ISO extends Prefab
{
    /**
     * ISO 3166-1 country codes
     */
	// phpcs:disable Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase
    public const CC_af = 'Afghanistan';
    public const CC_ax = 'Åland Islands';
    public const CC_al = 'Albania';
    public const CC_dz = 'Algeria';
    public const CC_as = 'American Samoa';
    public const CC_ad = 'Andorra';
    public const CC_ao = 'Angola';
    public const CC_ai = 'Anguilla';
    public const CC_aq = 'Antarctica';
    public const CC_ag = 'Antigua and Barbuda';
    public const CC_ar = 'Argentina';
    public const CC_am = 'Armenia';
    public const CC_aw = 'Aruba';
    public const CC_au = 'Australia';
    public const CC_at = 'Austria';
    public const CC_az = 'Azerbaijan';
    public const CC_bs = 'Bahamas';
    public const CC_bh = 'Bahrain';
    public const CC_bd = 'Bangladesh';
    public const CC_bb = 'Barbados';
    public const CC_by = 'Belarus';
    public const CC_be = 'Belgium';
    public const CC_bz = 'Belize';
    public const CC_bj = 'Benin';
    public const CC_bm = 'Bermuda';
    public const CC_bt = 'Bhutan';
    public const CC_bo = 'Bolivia';
    public const CC_bq = 'Bonaire; Sint Eustatius and Saba';
    public const CC_ba = 'Bosnia and Herzegovina';
    public const CC_bw = 'Botswana';
    public const CC_bv = 'Bouvet Island';
    public const CC_br = 'Brazil';
    public const CC_io = 'British Indian Ocean Territory';
    public const CC_bn = 'Brunei Darussalam';
    public const CC_bg = 'Bulgaria';
    public const CC_bf = 'Burkina Faso';
    public const CC_bi = 'Burundi';
    public const CC_kh = 'Cambodia';
    public const CC_cm = 'Cameroon';
    public const CC_ca = 'Canada';
    public const CC_cv = 'Cape Verde';
    public const CC_ky = 'Cayman Islands';
    public const CC_cf = 'Central African Republic';
    public const CC_td = 'Chad';
    public const CC_cl = 'Chile';
    public const CC_cn = 'China';
    public const CC_cx = 'Christmas Island';
    public const CC_cc = 'Cocos (Keeling) Islands';
    public const CC_co = 'Colombia';
    public const CC_km = 'Comoros';
    public const CC_cg = 'Congo';
    public const CC_cd = 'Congo; The Democratic Republic of';
    public const CC_ck = 'Cook Islands';
    public const CC_cr = 'Costa Rica';
    public const CC_ci = 'Côte d\'ivoire';
    public const CC_hr = 'Croatia';
    public const CC_cu = 'Cuba';
    public const CC_cw = 'Curaçao';
    public const CC_cy = 'Cyprus';
    public const CC_cz = 'Czech Republic';
    public const CC_dk = 'Denmark';
    public const CC_dj = 'Djibouti';
    public const CC_dm = 'Dominica';
    public const CC_do = 'Dominican Republic';
    public const CC_ec = 'Ecuador';
    public const CC_eg = 'Egypt';
    public const CC_sv = 'El Salvador';
    public const CC_gq = 'Equatorial Guinea';
    public const CC_er = 'Eritrea';
    public const CC_ee = 'Estonia';
    public const CC_et = 'Ethiopia';
    public const CC_fk = 'Falkland Islands (Malvinas)';
    public const CC_fo = 'Faroe Islands';
    public const CC_fj = 'Fiji';
    public const CC_fi = 'Finland';
    public const CC_fr = 'France';
    public const CC_gf = 'French Guiana';
    public const CC_pf = 'French Polynesia';
    public const CC_tf = 'French Southern Territories';
    public const CC_ga = 'Gabon';
    public const CC_gm = 'Gambia';
    public const CC_ge = 'Georgia';
    public const CC_de = 'Germany';
    public const CC_gh = 'Ghana';
    public const CC_gi = 'Gibraltar';
    public const CC_gr = 'Greece';
    public const CC_gl = 'Greenland';
    public const CC_gd = 'Grenada';
    public const CC_gp = 'Guadeloupe';
    public const CC_gu = 'Guam';
    public const CC_gt = 'Guatemala';
    public const CC_gg = 'Guernsey';
    public const CC_gn = 'Guinea';
    public const CC_gw = 'Guinea-Bissau';
    public const CC_gy = 'Guyana';
    public const CC_ht = 'Haiti';
    public const CC_hm = 'Heard Island and McDonald Islands';
    public const CC_va = 'Holy See (Vatican City State)';
    public const CC_hn = 'Honduras';
    public const CC_hk = 'Hong Kong';
    public const CC_hu = 'Hungary';
    public const CC_is = 'Iceland';
    public const CC_in = 'India';
    public const CC_id = 'Indonesia';
    public const CC_ir = 'Iran; Islamic Republic of';
    public const CC_iq = 'Iraq';
    public const CC_ie = 'Ireland';
    public const CC_im = 'Isle of Man';
    public const CC_il = 'Israel';
    public const CC_it = 'Italy';
    public const CC_jm = 'Jamaica';
    public const CC_jp = 'Japan';
    public const CC_je = 'Jersey';
    public const CC_jo = 'Jordan';
    public const CC_kz = 'Kazakhstan';
    public const CC_ke = 'Kenya';
    public const CC_ki = 'Kiribati';
    public const CC_kp = 'Korea; Democratic People\'s Republic of';
    public const CC_kr = 'Korea; Republic of';
    public const CC_kw = 'Kuwait';
    public const CC_kg = 'Kyrgyzstan';
    public const CC_la = 'Lao People\'s Democratic Republic';
    public const CC_lv = 'Latvia';
    public const CC_lb = 'Lebanon';
    public const CC_ls = 'Lesotho';
    public const CC_lr = 'Liberia';
    public const CC_ly = 'Libya';
    public const CC_li = 'Liechtenstein';
    public const CC_lt = 'Lithuania';
    public const CC_lu = 'Luxembourg';
    public const CC_mo = 'Macao';
    public const CC_mk = 'Macedonia; The Former Yugoslav Republic of';
    public const CC_mg = 'Madagascar';
    public const CC_mw = 'Malawi';
    public const CC_my = 'Malaysia';
    public const CC_mv = 'Maldives';
    public const CC_ml = 'Mali';
    public const CC_mt = 'Malta';
    public const CC_mh = 'Marshall Islands';
    public const CC_mq = 'Martinique';
    public const CC_mr = 'Mauritania';
    public const CC_mu = 'Mauritius';
    public const CC_yt = 'Mayotte';
    public const CC_mx = 'Mexico';
    public const CC_fm = 'Micronesia; Federated States of';
    public const CC_md = 'Moldova; Republic of';
    public const CC_mc = 'Monaco';
    public const CC_mn = 'Mongolia';
    public const CC_me = 'Montenegro';
    public const CC_ms = 'Montserrat';
    public const CC_ma = 'Morocco';
    public const CC_mz = 'Mozambique';
    public const CC_mm = 'Myanmar';
    public const CC_na = 'Namibia';
    public const CC_nr = 'Nauru';
    public const CC_np = 'Nepal';
    public const CC_nl = 'Netherlands';
    public const CC_nc = 'New Caledonia';
    public const CC_nz = 'New Zealand';
    public const CC_ni = 'Nicaragua';
    public const CC_ne = 'Niger';
    public const CC_ng = 'Nigeria';
    public const CC_nu = 'Niue';
    public const CC_nf = 'Norfolk Island';
    public const CC_mp = 'Northern Mariana Islands';
    public const CC_no = 'Norway';
    public const CC_om = 'Oman';
    public const CC_pk = 'Pakistan';
    public const CC_pw = 'Palau';
    public const CC_ps = 'Palestinian Territory; Occupied';
    public const CC_pa = 'Panama';
    public const CC_pg = 'Papua New Guinea';
    public const CC_py = 'Paraguay';
    public const CC_pe = 'Peru';
    public const CC_ph = 'Philippines';
    public const CC_pn = 'Pitcairn';
    public const CC_pl = 'Poland';
    public const CC_pt = 'Portugal';
    public const CC_pr = 'Puerto Rico';
    public const CC_qa = 'Qatar';
    public const CC_re = 'Réunion';
    public const CC_ro = 'Romania';
    public const CC_ru = 'Russian Federation';
    public const CC_rw = 'Rwanda';
    public const CC_bl = 'Saint Barthélemy';
    public const CC_sh = 'Saint Helena; Ascension and Tristan da Cunha';
    public const CC_kn = 'Saint Kitts and Nevis';
    public const CC_lc = 'Saint Lucia';
    public const CC_mf = 'Saint Martin (French Part)';
    public const CC_pm = 'Saint Pierre and Miquelon';
    public const CC_vc = 'Saint Vincent and The Grenadines';
    public const CC_ws = 'Samoa';
    public const CC_sm = 'San Marino';
    public const CC_st = 'Sao Tome and Principe';
    public const CC_sa = 'Saudi Arabia';
    public const CC_sn = 'Senegal';
    public const CC_rs = 'Serbia';
    public const CC_sc = 'Seychelles';
    public const CC_sl = 'Sierra Leone';
    public const CC_sg = 'Singapore';
    public const CC_sk = 'Slovakia';
    public const CC_sx = 'Sint Maarten (Dutch Part)';
    public const CC_si = 'Slovenia';
    public const CC_sb = 'Solomon Islands';
    public const CC_so = 'Somalia';
    public const CC_za = 'South Africa';
    public const CC_gs = 'South Georgia and The South Sandwich Islands';
    public const CC_ss = 'South Sudan';
    public const CC_es = 'Spain';
    public const CC_lk = 'Sri Lanka';
    public const CC_sd = 'Sudan';
    public const CC_sr = 'Suriname';
    public const CC_sj = 'Svalbard and Jan Mayen';
    public const CC_sz = 'Swaziland';
    public const CC_se = 'Sweden';
    public const CC_ch = 'Switzerland';
    public const CC_sy = 'Syrian Arab Republic';
    public const CC_tw = 'Taiwan; Province of China';
    public const CC_tj = 'Tajikistan';
    public const CC_tz = 'Tanzania; United Republic of';
    public const CC_th = 'Thailand';
    public const CC_tl = 'Timor-Leste';
    public const CC_tg = 'Togo';
    public const CC_tk = 'Tokelau';
    public const CC_to = 'Tonga';
    public const CC_tt = 'Trinidad and Tobago';
    public const CC_tn = 'Tunisia';
    public const CC_tr = 'Turkey';
    public const CC_tm = 'Turkmenistan';
    public const CC_tc = 'Turks and Caicos Islands';
    public const CC_tv = 'Tuvalu';
    public const CC_ug = 'Uganda';
    public const CC_ua = 'Ukraine';
    public const CC_ae = 'United Arab Emirates';
    public const CC_gb = 'United Kingdom';
    public const CC_us = 'United States';
    public const CC_um = 'United States Minor Outlying Islands';
    public const CC_uy = 'Uruguay';
    public const CC_uz = 'Uzbekistan';
    public const CC_vu = 'Vanuatu';
    public const CC_ve = 'Venezuela';
    public const CC_vn = 'Viet Nam';
    public const CC_vg = 'Virgin Islands; British';
    public const CC_vi = 'Virgin Islands; U.S.';
    public const CC_wf = 'Wallis and Futuna';
    public const CC_eh = 'Western Sahara';
    public const CC_ye = 'Yemen';
    public const CC_zm = 'Zambia';
    public const CC_zw = 'Zimbabwe';

    /**
     * ISO 639-1 language codes (Windows-compatibility subset)
     */
    public const LC_af = 'Afrikaans';
    public const LC_am = 'Amharic';
    public const LC_ar = 'Arabic';
    public const LC_as = 'Assamese';
    public const LC_ba = 'Bashkir';
    public const LC_be = 'Belarusian';
    public const LC_bg = 'Bulgarian';
    public const LC_bn = 'Bengali';
    public const LC_bo = 'Tibetan';
    public const LC_br = 'Breton';
    public const LC_ca = 'Catalan';
    public const LC_co = 'Corsican';
    public const LC_cs = 'Czech';
    public const LC_cy = 'Welsh';
    public const LC_da = 'Danish';
    public const LC_de = 'German';
    public const LC_dv = 'Divehi';
    public const LC_el = 'Greek';
    public const LC_en = 'English';
    public const LC_es = 'Spanish';
    public const LC_et = 'Estonian';
    public const LC_eu = 'Basque';
    public const LC_fa = 'Persian';
    public const LC_fi = 'Finnish';
    public const LC_fo = 'Faroese';
    public const LC_fr = 'French';
    public const LC_gd = 'Scottish Gaelic';
    public const LC_gl = 'Galician';
    public const LC_gu = 'Gujarati';
    public const LC_he = 'Hebrew';
    public const LC_hi = 'Hindi';
    public const LC_hr = 'Croatian';
    public const LC_hu = 'Hungarian';
    public const LC_hy = 'Armenian';
    public const LC_id = 'Indonesian';
    public const LC_ig = 'Igbo';
    public const LC_is = 'Icelandic';
    public const LC_it = 'Italian';
    public const LC_ja = 'Japanese';
    public const LC_ka = 'Georgian';
    public const LC_kk = 'Kazakh';
    public const LC_km = 'Khmer';
    public const LC_kn = 'Kannada';
    public const LC_ko = 'Korean';
    public const LC_lb = 'Luxembourgish';
    public const LC_lo = 'Lao';
    public const LC_lt = 'Lithuanian';
    public const LC_lv = 'Latvian';
    public const LC_mi = 'Maori';
    public const LC_ml = 'Malayalam';
    public const LC_mr = 'Marathi';
    public const LC_ms = 'Malay';
    public const LC_mt = 'Maltese';
    public const LC_ne = 'Nepali';
    public const LC_nl = 'Dutch';
    public const LC_no = 'Norwegian';
    public const LC_oc = 'Occitan';
    public const LC_or = 'Oriya';
    public const LC_pl = 'Polish';
    public const LC_ps = 'Pashto';
    public const LC_pt = 'Portuguese';
    public const LC_qu = 'Quechua';
    public const LC_ro = 'Romanian';
    public const LC_ru = 'Russian';
    public const LC_rw = 'Kinyarwanda';
    public const LC_sa = 'Sanskrit';
    public const LC_si = 'Sinhala';
    public const LC_sk = 'Slovak';
    public const LC_sl = 'Slovenian';
    public const LC_sq = 'Albanian';
    public const LC_sv = 'Swedish';
    public const LC_ta = 'Tamil';
    public const LC_te = 'Telugu';
    public const LC_th = 'Thai';
    public const LC_tk = 'Turkmen';
    public const LC_tr = 'Turkish';
    public const LC_tt = 'Tatar';
    public const LC_uk = 'Ukrainian';
    public const LC_ur = 'Urdu';
    public const LC_vi = 'Vietnamese';
    public const LC_wo = 'Wolof';
    public const LC_yo = 'Yoruba';
    public const LC_zh = 'Chinese';
	// phpcs:enable Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase

    /**
    *   Return list of languages indexed by ISO 639-1 language code
    *   @return array
    **/
    public function languages()
    {
        return Base::instance()->constants($this, 'LC_');
    }

    /**
    *   Return list of countries indexed by ISO 3166-1 country code
    *   @return array
    **/
    public function countries()
    {
        return Base::instance()->constants($this, 'CC_');
    }
}
